﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace Jurassic_Island
{
    public partial class FormInsertarFinal : Form
    {
        private ENLugares enLugar;
        private ENFinal enFin;
        private DataSet dsFinales;
        private bool editMode = false;


        public FormInsertarFinal()
        {

            enFin = new ENFinal();
            InitializeComponent();
        }

        public FormInsertarFinal(ENFinal enFinal)
        {
            enFin = new ENFinal();
            enFin = enFinal;
            editMode = true;
            InitializeComponent();

        }

      

        private void FormInsertarFinal_Load(object sender, EventArgs e)
        {
            enLugar = new ENLugares();
            DataSet dsLugares = enLugar.ObtenerNombresLugares();
            foreach (DataRow dr in dsLugares.Tables[0].Rows)
            {
               // cbOrigen.Items.AddRange(dr.ItemArray);
                cbLugares.Items.AddRange(dr.ItemArray);
                //cbDestino.Items.AddRange(dr.ItemArray);
            }

            if (editMode)
            {
                this.Text = "Editar Final";
                btInsertar.Text = "&Actualizar";
                tbNombre.Text = enFin.Nombre.ToString();
                cbLugares.Text = enFin.Lugar.ToString();
                tbDescripcion.Text = enFin.Descripcion.ToString();
            }
        }

        private void btInsertar_Click(object sender, EventArgs e)
        {

            string exprCadenatxt = @"^[A-Za-z]+[a-zA-Z ]*$";
            string exprCadenaDescrp = @"^[A-Za-z0-9]+[a-zA-Z0-9 .,]*$";

            if (cbLugares.Text.Length > 0 && Regex.Match(tbNombre.Text,exprCadenatxt).Success && Regex.Match(tbDescripcion.Text,exprCadenaDescrp).Success )
            {
                
                //enFin = new ENFinal();
                dsFinales = new DataSet();
                
                dsFinales = enFin.ObtenerListadoFinales();

                if (editMode)
                {
                    int i = 0;
                    foreach (DataRow dr in dsFinales.Tables["Finales"].Rows)
                    {
                        
                        if (enFin.Nombre.ToString() == dsFinales.Tables["Finales"].Rows[i]["Nombre"].ToString())
                        {
                            dsFinales.Tables["Finales"].Rows[i]["Nombre"] = tbNombre.Text;
                            dsFinales.Tables["Finales"].Rows[i]["Lugar"] = cbLugares.Text;
                            dsFinales.Tables["Finales"].Rows[i]["Descripcion"] = tbDescripcion.Text;
                            break;
                        }
                        i++;
                    }
                }

                else
                {
                    
                    DataRow row = dsFinales.Tables["Finales"].NewRow();
                    row["Nombre"] = tbNombre.Text;
                    row["Lugar"] = cbLugares.Text;
                    row["Descripcion"] = tbDescripcion.Text;
                    dsFinales.Tables["Finales"].Rows.Add(row);
                }

                if (enFin.ActualizarFinales(dsFinales))
                {
                    if (editMode)
                    {
                        MessageBox.Show("Final editado correctamente", "Éxito al editar", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }

                    else
                    {
                        MessageBox.Show("Final insertado correctamente", "Éxito al insertar", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    Dispose();
                }

                else
                    MessageBox.Show("Error, no se ha podido insertar el final", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                /*
                enFin.Nombre = tbNombre.Text;
                enFin.Lugar = cbLugares.Text;
                enFin.Descripcion = tbDescripcion.Text;

                enFin.InsertarFinal(editMode);
                Close();*/
            }

            else
            {
                MessageBox.Show("Faltan datos por introducir","Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
        }

        private void btCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void tbNombre_Validating(object sender, CancelEventArgs e)
        {
            string exprCadenatxt = @"^[A-Za-z]+[a-zA-Z ]*$";

            if (Regex.Match(tbNombre.Text, exprCadenatxt).Success)
            {
                epNombre.SetError(tbNombre, "");
            }
            else
                epNombre.SetError(tbNombre, "Introduce un nombre válido (puede contener mayúsculas y minúsculas, pero no números)");
        }

        private void tbDescripcion_TextChanged(object sender, EventArgs e)
        {

        }
    }
}
